//#include <stdio.h>
//#define ROW 9
//#define COL 9
//int main()
//{
//	int n;
//	int arr[ROW][COL];
//	scanf_s("%d", &n);
//	for (int i = 0;i < n;i++)
//	{
//		for (int j = 0;j < n;j++)
//		{
//			arr[i][j] = 0;
//		}
//	}
//	int x = 0, y = 0;
//	int num = 1;
//	int dx[] = { 0,1,0,-1 };
//	int dy[] = { 1,0,-1,0 };
//	int direct = 0;
//	while (num <= n * n)
//	{
//		arr[x][y] = num++;
//		int nx = x + dx[direct];
//		int ny = y + dy[direct];
//		if (nx<0 || nx>n || ny < 0 || ny>n || arr[nx][ny] != 0)
//		{
//			direct = (direct + 1) % 4;
//			nx = x + dx[direct];
//			ny = y + dy[direct];
//		}
//		x = nx;
//		y = ny;
//	}
//	for (int i = 0;i < n;i++)
//	{
//		for (int j = 0;j < n;j++)
//		{
//			printf("%3d", arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}


#include <stdio.h>
#define ROW 9
#define COL 9
int main()
{
	int n;
	scanf_s("%d", &n);
	int arr[ROW][COL];
	for (int i = 0;i < n;i++)
	{
		for (int j = 0;j < n;j++)
		{
			arr[i][j] = 0;
		}
	}
	int x = 0;
	int y = 0;
	int num = 1;
	int dx[] = {0,1,0,-1};
	int dy[] = { 1,0,-1,0 };
	int direct = 0;
	while (num <=n * n)
	{
		arr[x][y] = num++;
		int nx = x + dx[direct];
		int ny = y + dy[direct];
		if (nx<0 || nx>=n || ny<0 || ny>=n || arr[nx][ny] != 0)
		{
			direct = (direct + 1) % 4;
			 nx = x + dx[direct];
			 ny = y + dy[direct];
		}
		x = nx;
		y = ny;
	}
	for (int i = 0;i < n;i++)
	{
		for (int j = 0;j < n;j++)
		{
			printf("%3d", arr[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}